regexp.synthesis.clash.axioms
The axioms for correctness of synthesis.
Axiom fold_spec : ∀ {A s}(f : A → A → A)(u : (s ~> A)%con), fold f (syn u) = concrete.function.fold f u.
Axiom constant_spec : ∀ {A s}(a : A),
clash.function.constant a = syn (concrete.function.constant (s:=s) a).
Axiom zipWith_spec : ∀ {A B C s}(f : A → B → C)
(u : (s ~> A)%con)
(v : (s ~> B)%con),
zipWith f (syn u) (syn v) = syn (concrete.function.zipWith f u v).
Axiom map_spec : ∀ {A B s} (f : A → B) (u : regexp.concrete.function.t A s),
clash.function.map f (syn u) = syn (concrete.function.map f u).