Permut.xml 9.7 KB
Newer Older
1
<theory name="list.Permut" 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"/><require name="list.Reverse"/><require name="list.NumOcc"/></realized><definition altname="permut" path="list.Permut"><app><const name="HOL.eq"/><app><var name="permut"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></var><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="HOL.All"/><abs name="x"><tvar name="a"/><app><const name="HOL.eq"/><app><const name="num_occ" path="list.NumOcc"><fun><tvar name="a"/><type name="List.list"><tvar name="a"/></type><type name="Int.int"/></fun></const><var name="x"><tvar name="a"/></var><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="num_occ" path="list.NumOcc"><fun><tvar name="a"/><type name="List.list"><tvar name="a"/></type><type name="Int.int"/></fun></const><var name="x"><tvar name="a"/></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></app></abs></app></app></definition><lemma name="Permut_refl" altname="Permut_refl" path="list.Permut"><prems/><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l"><type name="List.list"><tvar name="a"/></type></var><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></concls></lemma><lemma name="Permut_sym" altname="Permut_sym" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></prems><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l2"><type name="List.list"><tvar name="a"/></type></var><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app></concls></lemma><lemma name="Permut_trans" altname="Permut_trans" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l2"><type name="List.list"><tvar name="a"/></type></var><var name="l3"><type name="List.list"><tvar name="a"/></type></var></app></prems><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l3"><type name="List.list"><tvar name="a"/></type></var></app></concls></lemma><lemma name="Permut_cons" altname="Permut_cons" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></prems><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><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><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></concls></lemma><lemma name="Permut_swap" altname="Permut_swap" path="list.Permut"><prems/><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><app><const name="List.list.Cons"/><var name="x"><tvar name="a"/></var><app><const name="List.list.Cons"/><var name="y"><tvar name="a"/></var><var name="l"><type name="List.list"><tvar name="a"/></type></var></app></app><app><const name="List.list.Cons"/><var name="y"><tvar name="a"/></var><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></concls></lemma><lemma name="Permut_cons_append" altname="Permut_cons_append" path="list.Permut"><prems/><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><app><const name="List.append"/><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><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var><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="Permut_assoc" altname="Permut_assoc" path="list.Permut"><prems/><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><app><const name="List.append"/><app><const name="List.append"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><var name="l3"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var><app><const name="List.append"/><var name="l2"><type name="List.list"><tvar name="a"/></type></var><var name="l3"><type name="List.list"><tvar name="a"/></type></var></app></app></app></concls></lemma><lemma name="Permut_append" altname="Permut_append" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="k1"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l2"><type name="List.list"><tvar name="a"/></type></var><var name="k2"><type name="List.list"><tvar name="a"/></type></var></app></prems><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><app><const name="List.append"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><var name="k1"><type name="List.list"><tvar name="a"/></type></var><var name="k2"><type name="List.list"><tvar name="a"/></type></var></app></app></concls></lemma><lemma name="Permut_append_swap" altname="Permut_append_swap" path="list.Permut"><prems/><concls><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><app><const name="List.append"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="List.append"/><var name="l2"><type name="List.list"><tvar name="a"/></type></var><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app></app></concls></lemma><lemma name="Permut_mem" altname="Permut_mem" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app><app><const name="Set.member"/><var name="x"><tvar name="a"/></var><app><const name="List.list.set"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var></app></app></prems><concls><app><const name="Set.member"/><var name="x"><tvar name="a"/></var><app><const name="List.list.set"/><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></app></concls></lemma><lemma name="Permut_length" altname="Permut_length" path="list.Permut"><prems><app><const name="permut" local="true"><pred><type name="List.list"><tvar name="a"/></type><type name="List.list"><tvar name="a"/></type></pred></const><var name="l1"><type name="List.list"><tvar name="a"/></type></var><var name="l2"><type name="List.list"><tvar name="a"/></type></var></app></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"/><var name="l1"><type name="List.list"><tvar name="a"/></type></var></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="l2"><type name="List.list"><tvar name="a"/></type></var></app></app></app></concls></lemma></theory>