You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGES.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,10 @@
2
2
3
3
## Next
4
4
5
+
- Simplify kvar solutions in fqout files [liquid-fixpoint#741](https://github.com/ucsd-progsys/liquid-fixpoint/pull/741).
6
+
7
+
## 0.9.10.1.2 (2025-03-06)
8
+
5
9
- Implement opaque reflection, a feature to allow reflecting functions which
6
10
call to non-reflected functions [#2323](https://github.com/ucsd-progsys/liquidhaskell/pull/2323).
7
11
- Implement reflection from interface files, which can reflect functions from
@@ -15,11 +19,20 @@
15
19
and constraint generation [#2336](https://github.com/ucsd-progsys/liquidhaskell/pull/2336).
16
20
- Augmented the context of error messages [#2350](https://github.com/ucsd-progsys/liquidhaskell/pull/2350).
17
21
- Add a new flag `--etabeta` to reason with lambdas in PLE [#2356](https://github.com/ucsd-progsys/liquidhaskell/pull/2356)
22
+
- Add a new flag `--dependentcase` to expand support for higher-order reasoning [#2384](https://github.com/ucsd-progsys/liquidhaskell/pull/2384)
23
+
- Add support for reflecting lambda expressions [#2465](https://github.com/ucsd-progsys/liquidhaskell/pull/2465).
18
24
- Enabling the LiquidHaskell plugin now enables `-fno-ignore-interface-pragmas` ([#2326](https://github.com/ucsd-progsys/liquidhaskell/pull/2326))
19
25
and `-dkeep-comments` ([#2367](https://github.com/ucsd-progsys/liquidhaskell/pull/2367)).
20
26
- LiquidHaskell earned a new `--minimal` verbosity level as default that prints the banner with the
21
27
amount of constraints checked ([#2395](https://github.com/ucsd-progsys/liquidhaskell/pull/2395)).
22
28
This banner is now suppressed when the verbosity is set to `--quiet` ([#2391](https://github.com/ucsd-progsys/liquidhaskell/pull/2391)).
29
+
- Avoid reparsing and retypechecking when verifying modules [#2389](https://github.com/ucsd-progsys/liquidhaskell/pull/2389).
30
+
- Name resolution is done only when verifying a module. It is no longer done when
31
+
importing it [#2169](https://github.com/ucsd-progsys/liquidhaskell/issues/2169). One
32
+
side effect of this change is that LH can now pick up names in scope using import aliases
33
+
in most places (but see [#2481](https://github.com/ucsd-progsys/liquidhaskell/issues/2481)).
34
+
- Allow to link Haskell definitions with logical primitives via `define` declarations [#2463](https://github.com/ucsd-progsys/liquidhaskell/pull/2463).
35
+
- CVC5 solver is now supported for all logical theories, including Sets/Bags [#2483](https://github.com/ucsd-progsys/liquidhaskell/pull/2483)
Copy file name to clipboardExpand all lines: docs/mkDocs/docs/specifications.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1026,3 +1026,22 @@ Or in a Haskell source file:
1026
1026
-No support for abstract refinements.All abstract refinements are erased before relational typechecking.Notably, this happens for the standard list `[a]` and tuple `(a, b)` types!
1027
1027
1028
1028
-Limited support for higher-order relational signatures.Use `!=>` instead of `:=>` after the function arguments to enable higher-order checking.
1029
+
1030
+
##LazyVariables
1031
+
1032
+
A variable can be specified as `lazyvar` to defer its checking until it is used.This is useful in cases where a variable is defined in a `where` clause and should only be checked in the context where it is used.
1033
+
1034
+
For example, consider the following code:
1035
+
1036
+
```haskell
1037
+
{-@ safeDiv :: Int -> {v:Int | v /= 0} -> Int @-}
1038
+
safeDiv::Int->Int->Int
1039
+
safeDiv x y
1040
+
| y ==0= help
1041
+
|otherwise= x `div` y
1042
+
where
1043
+
{-@ lazyvar help @-}
1044
+
help =error"lol"
1045
+
```
1046
+
1047
+
In this example, the `lazyvar` annotation on `help` ensures that the check for `help` is deferred until it is used.Without this annotation, LiquidHaskell would incorrectly report an error like `Error:LiquidTypeMismatch`.
0 commit comments