# Equivalence and Subset

These operations **compare two Terms** by language and return a **boolean**.
## Equivalent

Two Terms are **equivalent** when they match **exactly the same set of strings**, even if written differently.

Example:

<CodeTabs defaultValue="java">
<CodeTabs.Tab value="java" label="Java">
```java
RegexSolverClient client = RegexSolverClient.builder()
    .apiToken(System.getenv("REGEXSOLVER_API_TOKEN"))
    .build();

Term a = Term.regex("a(b|c)");
Term b = Term.regex("ab|ac");

boolean result = client.equivalent(a, b);

System.out.println(result); // true
```
</CodeTabs.Tab>

<CodeTabs.Tab value="javascript" label="JavaScript">
```javascript
const client = new RegexSolverClient({ apiToken: process.env.REGEXSOLVER_API_TOKEN });

const a = Term.regex("a(b|c)");
const b = Term.regex("ab|ac");

const result = await client.equivalent(a, b);

console.log(result); // true
```
</CodeTabs.Tab>

<CodeTabs.Tab value="python" label="Python">
```python
client = RegexSolverClient(api_token=os.getenv("REGEXSOLVER_API_TOKEN"))

a = Term.regex(r"a(b|c)")
b = Term.regex(r"ab|ac")

result = client.equivalent(a, b)

print(result) # True
```
</CodeTabs.Tab>
</CodeTabs>

## Subset

A Term **A** is a subset of **B** if **every string matched by A is also matched by B**.

Example:

<CodeTabs defaultValue="java">
<CodeTabs.Tab value="java" label="Java">
```java
RegexSolverClient client = RegexSolverClient.builder()
    .apiToken(System.getenv("REGEXSOLVER_API_TOKEN"))
    .build();

Term a = Term.regex("cat|dog");
Term b = Term.regex("[a-z]+");

boolean r1 = client.subset(a, b);
System.out.println(r1); // true

boolean r2 = client.subset(b, a);
System.out.println(r2); // false
```
</CodeTabs.Tab>

<CodeTabs.Tab value="javascript" label="JavaScript">
```javascript
const client = new RegexSolverClient({ apiToken: process.env.REGEXSOLVER_API_TOKEN });

const a = Term.regex("cat|dog");
const b = Term.regex("[a-z]+");

const r1 = await client.subset(a, b);
console.log(r1); // true

const r2 = await client.subset(b, a);
console.log(r2); // false
```
</CodeTabs.Tab>

<CodeTabs.Tab value="python" label="Python">
```python
client = RegexSolverClient(api_token=os.getenv("REGEXSOLVER_API_TOKEN"))

a = Term.regex(r"cat|dog")
b = Term.regex(r"[a-z]+")

r1 = client.subset(a, b)
print(r1) # True

r2 = client.subset(b, a)
print(r2) # False
```
</CodeTabs.Tab>
</CodeTabs>
