Reverse.xml 4.46 KB
Newer Older
1
<theory name="list.Reverse" realize="true"><realized><require name="why3.BuiltIn.BuiltIn"/><require name="int.Int"/><require name="list.List"/><require name="list.Length"/><require name="list.Mem"/><require name="list.Append"/></realized><lemma name="reverse_def"><prems/><concls><app><const name="HOL.eq"/><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app><case><var name="l"><type name="List.list"><tvar name="a"/></type></var><pat><const name="List.list.Nil"><type name="List.list"><tvar name="a"/></type></const><const name="List.list.Nil"><type name="List.list"><tvar name="a"/></type></const></pat><pat><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><var name="r"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><app><const name="List.rev"/><var name="r"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><const name="List.list.Nil"><type name="List.list"><tvar name="a"/></type></const></app></app></pat></case></app></concls></lemma><lemma name="reverse_append" altname="reverse_append" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="List.append"/><app><const name="List.rev"/><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app></app><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><app><const name="List.rev"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></app></app></concls></lemma><lemma name="reverse_cons" altname="reverse_cons" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="List.rev"/><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app><app><const name="List.append"/><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><const name="List.list.Nil"><type name="List.list"><tvar name="a"/></type></const></app></app></app></concls></lemma><lemma name="cons_reverse" altname="cons_reverse" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app><app><const name="List.rev"/><app><const name="List.append"/><var name="l"><type name="List.list"><tvar name="a"/></type></var><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><const name="List.list.Nil"><type name="List.list"><tvar name="a"/></type></const></app></app></app></app></concls></lemma><lemma name="reverse_reverse" altname="reverse_reverse" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="List.rev"/><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></concls></lemma><lemma name="reverse_mem" altname="reverse_mem" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="Set.member"/><var name="x"><tvar name="a"/></var><app><const name="List.list.set"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app><app><const name="Set.member"/><var name="x"><tvar name="a"/></var><app><const name="List.list.set"/><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app></app></app></concls></lemma><lemma name="Reverse_length" altname="Reverse_length" path="list.Reverse"><prems/><concls><app><const name="HOL.eq"/><app><const name="Nat.semiring_1_class.of_nat"><fun><type name="Nat.nat"/><type name="Int.int"/></fun></const><app><const name="List.length"/><app><const name="List.rev"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app></app><app><const name="Nat.semiring_1_class.of_nat"><fun><type name="Nat.nat"/><type name="Int.int"/></fun></const><app><const name="List.length"/><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app></app></concls></lemma></theory>