Arend 1.7.0 released

Language updates:

Plugin updates:

arend-lib:

Plugin updates

Hide import

To bring some declarations to the current scope we use imports. If some imported names are already in scope, they will be ignored and plugin will show a warning. New “Hide import” quick-fix explicitly hides such names by adding them to the \hiding directive:

Fix failed class instance inference

If you use fields of some class and Arend cannot infer an appropriate instance for it, you will get an error. New quick-fixes help to handle this issue:

  • “Import instance” imports an instance available somewhere outside the current scope, say, from arend-lib.
  • “Add local instance” adds an implicit parameter of the class type to the current function.
  • “Replace local parameter with local instance” is suggested when you already have a parameter that can be used as a classifying field. The fix replaces a type of that parameter with the class type.

Replace with short name

Replaces a reference of the form A.B with B adding an appropriate \open directive:

Generate function

This intention comes in 2 flavors. The first one generates a function from a goal:

The second one extracts a selected expression to a separate function:

In both cases you get a function with parameters and return type inferred from the type of the initial expression.

Swap infix operator arguments

Swaps arguments of an infix operator:

Add and Remove clarifying parentheses

Allows adding and removing clarifying parentheses to a sequence of binary operators:

“Redundant parentheses” inspection

Detects redundant parentheses and suggests a fix to remove them:

Better support for Prelude

This release brings a couple of improvements that make Prelude more discoverable:

  • Prelude is shown in External Libraries.
  • Definitions from Prelude are discoverable via Navigate Symbol, Navigate File, and Find Usages.

Better support for Metas

Discoverability of language extensions (aka metas) is also improved in the following ways:

  • Metas are shown as Arend files in External Libraries.
  • Metas are discoverable via Navigate Symbol and Navigate File.

2021

Arend 1.6.0 released

Language updates: Built-in finite types \default implementations \coerce to function types \coerce for fields and constructors \have declaration ...

Back to Top ↑

2020

Arend 1.5.0 released

Language updates: String literals, which can be used in meta code Meta resolvers, which can be used to modify the scoping rules for meta definitions \...

Arend 1.4.0 released

Language updates: Implicit lambdas. Tests directory can be used to store files with tests, examples, and other code which is not a part of the library. ...

Arend 1.3.0 released

We implemented language extensions. This can be used to implement custom operations on the abstract syntax tree which are not supported by the language. They...

The first part of our tutorial is ready

We finished the first part of our new tutorial. It covers all the basic constructions of Arend. It does not mention anything related to homotopy theory. This...

Back to Top ↑

2019

Arend 1.2.0 released

We implemented a few features related to classes and pattern matching. One of these features is pattern matching on idp : a = a, which can be used instead of...

Arend 1.1.0 released

Arend now has proof irrelevant universe of proposition and the plugin can run the typechecker automatically in background.

Back to Top ↑