Copyright | (c) Levent Erkok |
---|---|
License | BSD3 |
Maintainer | erkokl@gmail.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Documentation.SBV.Examples.KnuckleDragger.Kleene
Description
Example use of the KnuckleDragger layer, proving some Kleene algebra theorems.
Documentation
An uninterpreted sort, corresponding to the type of Kleene algebra strings.
Instances
star :: SKleene -> SKleene Source #
Star operator over kleene algebras. We're leaving this uninterpreted.
(<=) :: SKleene -> SKleene -> SBool Source #
The set of strings matched by one regular expression is a subset of the second, if adding it to the second doesn't change the second set.
kleeneProofs :: IO () Source #
A sequence of Kleene algebra proofs. See http://www.cs.cornell.edu/~kozen/Papers/ka.pdf
We have:
>>>
kleeneProofs
Axiom: par_assoc Axiom: par_comm Axiom: par_idem Axiom: par_zero Axiom: seq_assoc Axiom: seq_zero Axiom: seq_one Axiom: rdistrib Axiom: ldistrib Axiom: unfold Axiom: least_fix Lemma: par_lzero Q.E.D. Lemma: par_monotone Q.E.D. Lemma: seq_monotone Q.E.D. Lemma: star_star_1 Step : 1 Q.E.D. Step : 2 Q.E.D. Step : 3 Q.E.D. Step : 4 Q.E.D. Result: Q.E.D. Lemma: subset_eq Q.E.D. Lemma: star_star_2_2 Q.E.D. Lemma: star_star_2_3 Q.E.D. Lemma: star_star_2_1 Q.E.D. Lemma: star_star_2 Q.E.D.