src/HOL/Library/Multiset.thy
changeset 41372 551eb49a6e91
parent 41069 6fabc0414055
child 41505 6d19301074cf
equal deleted inserted replaced
41371:35d2241c169c 41372:551eb49a6e91
  1641   but also images like @{term "{#x+x. x:#M #}"} and @{term [source]
  1641   but also images like @{term "{#x+x. x:#M #}"} and @{term [source]
  1642   "{#x+x|x:#M. x<c#}"}, where the latter is currently displayed as
  1642   "{#x+x|x:#M. x<c#}"}, where the latter is currently displayed as
  1643   @{term "{#x+x|x:#M. x<c#}"}.
  1643   @{term "{#x+x|x:#M. x<c#}"}.
  1644 *}
  1644 *}
  1645 
  1645 
  1646 type_lifting image_mset proof -
  1646 type_lifting image_mset: image_mset proof -
  1647   fix f g A show "image_mset f (image_mset g A) = image_mset (\<lambda>x. f (g x)) A"
  1647   fix f g 
  1648     by (induct A) simp_all
  1648   show "image_mset f \<circ> image_mset g = image_mset (f \<circ> g)"
       
  1649   proof
       
  1650     fix A
       
  1651     show "(image_mset f \<circ> image_mset g) A = image_mset (f \<circ> g) A"
       
  1652       by (induct A) simp_all
       
  1653   qed
  1649 next
  1654 next
  1650   fix A show "image_mset (\<lambda>x. x) A = A"
  1655   show "image_mset id = id"
  1651     by (induct A) simp_all
  1656   proof
       
  1657     fix A
       
  1658     show "image_mset id A = id A"
       
  1659       by (induct A) simp_all
       
  1660   qed
  1652 qed
  1661 qed
  1653 
  1662 
  1654 
  1663 
  1655 subsection {* Termination proofs with multiset orders *}
  1664 subsection {* Termination proofs with multiset orders *}
  1656 
  1665