# Local Solubility

Efficient routines are provided for testing local solubility for models of all degrees over ${\mathbb{Q}}$.

## `IsLocallySoluble(model, p): ModelG1, RngIntElt -> BoolElt, Any`

```magma
Transformation: BoolElt                    Default: false
Random        : BoolElt                    Default: false
verbose       : LocSol                     Default: Verbose : 1
```

This determines whether the given genus one model (which must be defined over ${\mathbb{Q}}$ and nonsingular) has a ${\mathbb{Q}}_p$-rational point. When this is the case, then it also returns a ${\mathbb{Q}}_p$ point.

If the optional argument `Transformation` is `true`, then the second returned value is *not* a point but instead a transformation $g$ such that `g*model` has a smooth point on its reduction modulo $p$.

If `Random` is `true`, then (for models of some degrees, including $4$) the local point returned is not always the same, when the function is called several times with the same input.

## `IsLocallySoluble(model): ModelG1 -> BoolElt`

This determines whether the given genus one model (which must be defined over ${\mathbb{Q}}$ and nonsingular) has a ${\mathbb{Q}}_p$-rational point for all primes $p$.

This is done by calling `IsLocallySoluble(model, p)` for all bad primes $p$.
