Como podemos provar que se para todas as entradas f
e g
retornar a mesma saída, então as duas funções são equivalentes?
lemma func_ext(f: int -> int, g: int -> int)
requires forall x :: f(x) == g(x)
ensures f == g
Eu diria que isso é um axioma, mas não funciona. A extensionalidade da função não é verdadeira em Dafny?
Não acho que o dafny suporte a extensionalidade da função. Não encontrei nada na documentação oficial, mas aqui está um link para comentar que confirma isso https://github.com/dafny-lang/dafny/issues/2308#issuecomment -1169553777