inductive AltCore (α : Type) | default (val : α) | alt (name : String) (val : α) inductive Code where | cases (alt: AltCore Code) | return (id : Nat) abbrev Alt := AltCore Code def AltCore.getCode : Alt → Code | .default c => c | .alt _ c => c def AltCore.update (alt : Alt) (c : Code) : Alt := match alt with | .default _ => if true then alt else .default c | .alt n _ => if true then alt else .alt n c example (alt : Alt) : Code := alt.getCode def Alt.getCode' : Alt → Code | .default c => c | .alt _ c => c example (alt : Alt) : Code := if true then .return 1 else alt.getCode' example (alt : Alt) : Code := if true then alt.getCode' else .return 0