without-representation := λ(: tt List). (: ( (match tt ( () ( (LCons( p1 rst )) ( (set tt (cons( (without-representation p1) (without-representation rst) ))) )) ( LEOF () ) )) tt ) List); without-representation := λ(: tt Type). (: ( (match tt ( () ( (TAnd( lt rt )) ( (let lt2 (without-representation lt)) (let rt2 (without-representation rt)) (if (non-zero lt2) ( (if (non-zero rt2) ( (set tt (TAnd( (close lt2) (close rt2) ))) ) ( (set tt lt2) )) ) ( (if (non-zero rt2) ( (set tt rt2) ) ( (set tt TAny) )) )) )) ( (TGround( 'Constant_s LEOF )) (set tt TAny) ) ( (TGround( 'Literal_s LEOF )) (set tt TAny) ) ( (TGround( 'StackVariable_s LEOF )) (set tt TAny) ) ( (TGround( 'LocalVariable_s LEOF )) (set tt TAny) ) ( (TGround( 'GlobalVariable_s LEOF )) (set tt TAny) ) ( (TGround( 'Reg8_s LEOF )) (set tt TAny) ) ( (TGround( 'Reg16_s LEOF )) (set tt TAny) ) ( (TGround( 'Reg32_s LEOF )) (set tt TAny) ) ( (TGround( 'Reg64_s LEOF )) (set tt TAny) ) ( (TGround( tag ps )) ( (set tt (TGround( tag (close(without-representation ps)) ))) )) ( TAny () ) ( (TVar _) () ) )) tt ) Type);