### isabelle

#### Isabelle HOLCF doesn't understand fixrec

Here is a very simple theory: theory Test imports HOLCF begin fixrec down :: "'a u → 'a" where "down (up x) = x" end It gives the following error: Type unification failed: Clash of types "_ ⇒ _" and "_ → _" Type error in application: operator not of function type Operator: up :: ??'a → ??'a⇩⊥ Operand: x :: ??'b I have tried to declare different functions but I always get a similar error. What's a problem and how to fix it? I tried to replace → by ⇒, but it doesn't help.

The single arrow → is the space of continuous functions whereas the double arrow ⇒ represents the space of all total functions. All packages in HOLCF only work with continuous functions. This is why ⇒ will not work for most of HOLCF. Function application for continuous functions, however, must be written explicitly using the ASCII infix operator $ or \<cdot>. So the following works: fixrec down :: "'a u → 'a" where "down $ (up $ x) = x" Similarly, lambda abstractions for continuous functions use a capital Λ instead of a small λ.

### Related Links

Using the ordering locale with partial maps

Avoiding assumption with sledgehammer

Discriminant with Inequalities

Instances in locale declaration for Isabelle

How to interactively simplify a formula in a relational theory in Isabelle

Nonnegative Interval Integration

Widening the domain of a partial function

Automatically unfolding a record definition when accessor is used

Creating a datatype with inequalities in Isabelle

Isabelle Logic simple natural deduction test

Instantiating variables ending in a digit using where-attribute (Isabelle)

Using an existing definition in Isabelle/ Hol

Pending sort hypotheses

How can I use proved goals of locale interpretation to prove the remaining ones

Isabelle class obligation prove blue

Type declaration in Isabelle